<?php

ob_start();
require_once("../configs.php");
require_once(PASTA_SMARTY . "Funcoes.class.php");
require_once(PASTA_SMARTY . "Cryptografa.class.php");
require_once(PASTA_BANCO_DAOGENERICO . "DaoGenerico.class.php");
require_once(PASTA_CONEXAO . "Conexao.class.php");
require_once(PASTA_SMARTY . "Inicia.class.php");


$crypt = new Cryptografa();
$daoGenerico = new DaoGenerico();
$conexao = new Conexao();

if (isset($_GET["funcao"]) && !empty($_GET["funcao"])) {
    $funcao = $_GET["funcao"];
    $_POST = Funcoes::validaPost($_POST);
    $_POST = Funcoes::anti_injection_array($_POST);
    $funcao($_POST, $daoGenerico);
} else {

    /*
     * se existir o id altera se não insere
     */
    $get = Funcoes::decodificaParamGet($_GET["p"]);
//Funcoes::debuga($_POST,$get);
    if (empty($_POST["idReg"])) {
        $_POST["idReg"] = $get["idReg"];
    }
    $_POST = Funcoes::validaPost($_POST);
//if (!$_POST["tabela"] == "tb_layout_site") {
    if ($_POST["area"]) {
        $_POST["area"] = str_replace(" ", "-", strtolower(trim(Funcoes::retiraCaracterEspecial($_POST["area"]))));
    }
    if ($_POST["idReg"]) {
//Funcoes::debuga($get,$_POST,$_POST["idReg"]);
        //ser for formulário de criação de áreas
        if ($_POST["area"]) {
            $con = $conexao->getConexao();
            if ($_POST["tabela"] == "tb_sub_area") {
                $sql = "SELECT area,caminho FROM " . $_POST["tabela"] . " WHERE " . $_POST["id"] . "=" . $_POST["idReg"];
            } else {
                $sql = "SELECT area FROM " . $_POST["tabela"] . " WHERE " . $_POST["id"] . "=" . $_POST["idReg"];
            }
            $dados = $con->GetRow($sql);
            $con->Close();
            $atualNome = $dados["area"];
            if ($_POST["tabela"] == "tb_sub_area") {
                $atualCaminho = Funcoes::apenasCaminho($dados["caminho"]);
                $_POST["caminho"] = $atualCaminho . $_POST["area"] . "/";
            }
        }
        $result = $daoGenerico->update($_POST);
        if (!empty($_FILES["arquivo"]["name"])) {
            alteraArquivo($_FILES, $_POST["idReg"], $_POST);
        }
        if (!empty($_FILES["foto"]["name"]) || !empty($_POST["delFoto"])) {
            //Funcoes::debuga($_FILES["foto"]);
            alteraFoto($_FILES, $_POST["idReg"], $_POST);
        }
        if (validaAreaPadrao($_POST["area"])) {
            //ser for formulário de criação de áreas
            if ($_POST["area"] != $atualNome) {
                $novoNome = $_POST["area"];
                if ($_POST["tabela"] == "tb_sub_area") {
                    $pastaDestino = PASTA_PORTAL . $atualCaminho;
                } else {
                    $pastaDestino = PASTA_PORTAL;
                }
                //Funcoes::debuga($atualNome,$novoNome,$pastaDestino);
                Funcoes::renomeiaPasta($atualNome, $novoNome, $pastaDestino);
            }
        }
    } else {
        //MONTANDO CAMINHO
        if ($_POST["tabela"] == "tb_area" && !empty($_POST["id_area"]) && !empty($_POST["id_item_subarea"])) {

            $sql = "SELECT area FROM tb_area WHERE id_area=" . $_POST["id_area"];
            $con = $conexao->getConexao();
            $areaPai = $con->getRow($sql);
            $caminho = $areaPai["area"] . "/" . $_POST["area"] . "/";
            $_POST["caminho"] = $caminho;
        } else if ($_POST["tabela"] == "tb_sub_area" && $_POST["id_area"]) {
            if ($_POST["id_item_subarea"] != 0) {
                $coluna = "caminho";
                $sql = "SELECT caminho FROM tb_sub_area WHERE id_subarea=" . $_POST["id_item_subarea"];
            } else {
                $coluna = "area";
                $sql = "SELECT area FROM tb_area WHERE id_area=" . $_POST["id_area"];
            }
            $con = $conexao->getConexao();
            $areaPai = $con->getRow($sql);
            if ($coluna == "area") {
                $caminho = $areaPai[$coluna] . "/" . $_POST["area"] . "/";
            } else {
                $caminho = $areaPai[$coluna] . $_POST["area"] . "/";
            }
            $_POST["caminho"] = $caminho;
        } else {
            $_POST["caminho"] = $_POST["area"];
        }


        //$sql="SELECT ".$_POST["id"]." from ".$_POST["tabela"]." WHERE ".$_POST["nome_unico"]."='".$_POST[$_POST["nome_unico"]]."'";
        //INSERINDO
        if ($_POST["tabela"] != "tb_fotos") {
            $result = $daoGenerico->insert($_POST); //result é o id salvo no banco
        } else {
            $result = $_POST["id_categoria_fotos"];
        }
//    $con = $conexao->getConexao(); 
//    $id=$con->getRow($sql);
        //$con->Close();
//    $id=$id[$_POST["id"]];//Pegando id registrado ao salvar

        if (!empty($_FILES["arquivo"]["name"])) {
            salvarArquivo($_FILES, $result, $_POST);
        }
        if (!empty($_FILES["foto"]["name"])) {
            salvarFoto($_FILES, $result, $_POST);
        }
        if (validaAreaPadrao($_POST["area"])) {
            //ser for formulário de criação de áreas
            if ($_POST["area"] && $_POST["tabela"] != "tb_sub_area") {
                $pastaDestino = PASTA_PORTAL . $_POST["area"] . "/";
                $pastaOrigem = PASTA_FISICA_ARQUIVOS_PADRAO . "area/";
                Funcoes::copiar($pastaOrigem, $pastaDestino);
            } else if ($_POST["area"] && $_POST["tabela"] == "tb_sub_area") {
                $pastaDestino = PASTA_PORTAL . $_POST["caminho"];
                $pastaOrigem = PASTA_FISICA_ARQUIVOS_PADRAO . "area/";
                Funcoes::copiar($pastaOrigem, $pastaDestino);
            }
        }
    }
}
//não deixa ficar colocando parametro msg um na frente do outro, pois isso deixava a url enorme
$pos = stripos($_POST["url"], "&msg=");
$lixo = substr($_POST["url"], $pos);
if ($pos > 0) {
    $url = str_replace($lixo, "", $_POST["url"]);
} else {
    $url = $_POST["url"];
}

function salvarArquivo($file = null, $id_categoria_arquivos = null, $post = null) {
    $conexao = new Conexao();
    if (isset($file["arquivo"])) {
        $arquivo = $file["arquivo"];
        $arquivo["name"] = str_replace(" ", "-", trim(Funcoes::retiraCaracterEspecial($arquivo["name"])));
        $pasta_dir = PASTA_ARQUIVOS_SALVOS; //diretorio dos arquivos
//se nao existir a pasta ele cria uma
        if (!file_exists($pasta_dir)) {
            mkdir($pasta_dir);
        }
        $arquivo_nome = $pasta_dir . $arquivo["name"];
        $name = $arquivo["name"];
// Faz o upload da imagem
        move_uploaded_file($arquivo["tmp_name"], $arquivo_nome);
        if ($post["tabela"] == "tb_fotos") {
            $sql = "INSERT INTO tb_arquivos (descricao,caminho_arquivo,id_categoria_arquivos) VALUES ('$name','$arquivo_nome',$id_categoria_arquivos)";
        } else {
            $sql = "UPDATE " . $post["tabela"] . " SET caminho_arquivo='$arquivo_nome' WHERE " . $post["id"] . "=" . $id_categoria_arquivos;
        }

        try {
            $con = $conexao->getConexao();
            $con->Execute($sql);
        } catch (Exception $e) {
            $con->close();
            echo(Funcoes::organizaMsgErro("Erro ao Logar", $e));
        }
        $con->close();
    }
}

function salvarFoto($file = null, $id_categoria_fotos = null, $post = null) {
    $conexao = new Conexao();
    if (isset($file["foto"])) {
        $arquivo = $file["foto"];
        //$arquivo["name"] = str_replace(" ", "-", trim(Funcoes::retiraCaracterEspecial($arquivo["name"])));
        $arquivo["name"] = explode(".", str_replace(" ", "-", trim(Funcoes::retiraCaracterEspecial($arquivo["name"]))));
        $arquivo["name"] = Funcoes::gerarCodigoUnicoMd5() . "." . $arquivo["name"][1];
        $pasta_dir = CAMINHO_PASTA_IMAGENS_SALVAS; //diretorio dos arquivos             
        //se nao existir a pasta ele cria uma
        if (!file_exists($pasta_dir)) {
            mkdir($pasta_dir);
        }
        if (!empty($arquivo["name"])) {
            $arquivo_nome = $pasta_dir . $arquivo["name"];
        } else {
            $arquivo_nome = "";
        }
        $name = $arquivo["name"];
        $desc = $post["descricao"];
// Faz o upload da imagem
        move_uploaded_file($arquivo["tmp_name"], $arquivo_nome);


        if ($post["tabela"] == "tb_fotos") {
            $sql = "INSERT INTO tb_fotos (descricao,caminho_foto,id_categoria_fotos,nome_foto) VALUES ('$desc','$arquivo_nome',$id_categoria_fotos,'$name')";
        } else {
            $sql = "UPDATE " . $post["tabela"] . " SET caminho_foto='$arquivo_nome',nome_foto='$name' WHERE " . $post["id"] . "=" . $id_categoria_fotos;
        }
        //Funcoes::debuga($sql);
        try {
            $con = $conexao->getConexao();
            $con->Execute($sql);
        } catch (Exception $e) {
            $con->close();
            echo(Funcoes::organizaMsgErro("Erro ao Logar", $e));
        }
        $con->close();
    }
}

function alteraFoto($file = null, $id_categoria_fotos = null, $post = null) {
    $conexao = new Conexao();
    $sql = "SELECT * FROM " . $post["tabela"] . " WHERE " . $post["id"] . "=" . $post["idReg"];
    $con = $conexao->getConexao();
    $dados = $con->getRow($sql);
    $caminhoAtual = $dados["caminho_foto"];
    $con->close();
    $pasta_dir = CAMINHO_PASTA_IMAGENS_SALVAS; //diretorio dos arquivos             
    $arquivo = $file["foto"];
    if (!empty($arquivo["name"])) {
        //$arquivo["name"] = str_replace(" ", "-", trim(Funcoes::retiraCaracterEspecial($arquivo["name"])));
        $arquivo["name"] = explode(".", str_replace(" ", "-", trim(Funcoes::retiraCaracterEspecial($arquivo["name"]))));
        $arquivo["name"] = Funcoes::gerarCodigoUnicoMd5() . "." . $arquivo["name"][1];
    }

    if (!empty($arquivo["name"])) {
        $arquivo_nome = $pasta_dir . $arquivo["name"];
    } else {
        $arquivo_nome = "";
    }
    //Funcoes::debuga($caminhoAtual,$arquivo_nome);
    if ($caminhoAtual != $arquivo_nome) {

        //Funcoes::debuga($caminhoAtual,$arquivo_nome);
        //se existir deleta
        if (file_exists($caminhoAtual)) {
            unlink($caminhoAtual);
        }
        //se nao existir a pasta ele cria uma
        if (!file_exists($pasta_dir)) {
            mkdir($pasta_dir);
        }
        $name = $arquivo["name"];
        //Funcoes::debuga("a", $arquivo, $arquivo["tmp_name"], $arquivo_nome);
        // Faz o upload da imagem
        //Funcoes::debuga($arquivo, $caminhoAtual, $dados, $arquivo_nome);
        move_uploaded_file($arquivo["tmp_name"], $arquivo_nome);
        //$del = "DELETE FROM " . $post["tabela"] . " WHERE " . $post["id"] . "=" . $post["idReg"];
        $sql = "UPDATE " . $post["tabela"] . " SET caminho_foto='$arquivo_nome',nome_foto='$name' " . " WHERE " . $post["id"] . "=" . $post["idReg"];
        try {
            $con = $conexao->getConexao();
            $con->Execute($sql);
        } catch (Exception $e) {
            $con->close();
            echo(Funcoes::organizaMsgErro("Erro ao Logar", $e));
        }
        $con->close();
    }
}

function alteraArquivo($file = null, $id_categoria_arquivos = null, $post = null) {
    $conexao = new Conexao();
    $sql = "SELECT caminho_arquivo FROM " . $post["tabela"] . " WHERE " . $post["id"] . "=" . $post["idReg"];
    $con = $conexao->getConexao();
    $caminhoAtual = $con->getRow($sql);
    $con->close();
    $pasta_dir = CAMINHO_PASTA_IMAGENS_SALVAS; //diretorio dos arquivos
    $arquivo = $file["foto"];
    $arquivo["name"] = str_replace(" ", "-", trim(Funcoes::retiraCaracterEspecial($arquivo["name"])));
    $arquivo_nome = $pasta_dir . $arquivo["name"];
    if ($caminhoAtual != $arquivo_nome) {

        //se existir deleta
        if (file_exists($caminhoAtual)) {
            unlink($caminhoAtual);
        }
        //se nao existir a pasta ele cria uma
        if (!file_exists($pasta_dir)) {
            mkdir($pasta_dir);
        }
        $name = $arquivo["name"];
// Faz o upload da imagem
        move_uploaded_file($arquivo["tmp_name"], $arquivo_nome);
        $del = "DELETE FROM " . $post["tabela"] . " WHERE " . $post["id"] . "=" . $post["idReg"];
        $sql = "UPDATE " . $post["tabela"] . " SET caminho_arquivo='$arquivo_nome' " . " WHERE " . $post["id"] . "=" . $post["idReg"];

        try {
            $con = $conexao->getConexao();
            $con->Execute($sql);
            $con->Execute($del);
        } catch (Exception $e) {
            $con->close();
            echo(Funcoes::organizaMsgErro("Erro ao Logar", $e));
        }
        $con->close();
    }
}

function alteraLayoutSite($file = null, $post = null) {
    //Funcoes::debuga($file);
    $pasta_dir = CAMINHO_PASTA_IMAGENS; //diretorio dos arquivos
    foreach ($file as $i => $arquivo) {
        if ($i == 1) {
            $arquivo["name"] = "menu.png";
        }
        //Funcoes::debuga($arquivo);

        if (!empty($arquivo["name"])) {
            $arquivo_nome = $pasta_dir . $arquivo["name"];
        } else {
            $arquivo_nome = "";
        }
        //Funcoes::debuga($caminhoAtual["caminho_foto"],$arquivo_nome);
        if (!empty($arquivo_nome)) {

            //Funcoes::debuga($caminhoAtual,$arquivo_nome);
            //se existir deleta
            if (file_exists($arquivo_nome)) {
                unlink($arquivo_nome);
            }
            //se nao existir a pasta ele cria uma
            if (!file_exists($pasta_dir)) {
                mkdir($pasta_dir);
            }
            // Faz o upload da imagem
            move_uploaded_file($arquivo["tmp_name"], $arquivo_nome);
            $res = true;
        } else {
            $res = false;
        }
    }
    return $res;
}

function contatoDoPortal($post, $daoGenerico) {
    $result = $daoGenerico->insert($post);
    $post["texto_contato"] = "Nome:" . $post["nome_contato"] . "\n" . "Email:" . $post["email_contato"] . "\n" . "Telefone:" . $post["telefone_contato"] . "\n\n" . $post["texto_contato"];
    if (!$result) {
        $dadosEmail = Funcoes::montaParametrosEmail(NOME_PUBLICO, EMAIL_DESENVOLVEDOR, $post["nome_contato"], $post["email_contato"], "Erro de cadastro de contato feito pelo portal " . NOME_PUBLICO, $post["texto_contato"]);
        $rs = Funcoes::enviaEmail($dadosEmail);
        $dadosEmail = Funcoes::montaParametrosEmail(NOME_PUBLICO, SMTP_SERV_EMAIL, $post["nome_contato"], $post["email_contato"], "Contato feito pelo portal " . NOME_PUBLICO . ", mas que não encontra-se na base de dados.", $post["texto_contato"]);
        $rs = Funcoes::enviaEmail($dadosEmail);
        Header("Location: " . $post["url"] . "msg/0/");
    } else {
        $dadosEmail = Funcoes::montaParametrosEmail(NOME_PUBLICO, SMTP_SERV_EMAIL, $post["nome_contato"], $post["email_contato"], "Contato feito pelo portal " . NOME_PUBLICO, $post["texto_contato"]);
        $rs = Funcoes::enviaEmail($dadosEmail);
        Header("Location: " . $post["url"] . "msg/1/");
    }
}

function validaAreaPadrao($area) {
    if ($area != "noticias" && $area != "eventos" && $area != "perfil" && $area != "login") {
        return true;
    } else {
        return false;
    }
}

/*
 * se der erro exibe mensagem de erro, se não exibe mensagem sucesso
 */
if (!$result) {
    if ($_GET['tipo_form'] == 2) {
        $msg = Funcoes::processaMensagem(ERRO_PROCESSO, $erro, ALERT_ERRO, 1, true);
    } else {
        $msg = Funcoes::processaMensagem(ERRO_PROCESSO, $erro, ALERT_ERRO, 1);
    }
    Header("Location: " . $url . $msg);
} else {
    if ($_GET['tipo_form'] == 2) {
        $msg = Funcoes::processaMensagem(PROC_CONCLUIDO, "Os dados foram salvos.", ALERT_SUCESSO, 1, true);
    } else {
        $msg = Funcoes::processaMensagem(PROC_CONCLUIDO, "Os dados foram salvos.", ALERT_SUCESSO, 1);
    }
    Header("Location: " . $url . $msg);
}
//if (!$result) {
//    $msg = $crypt->crypt(ERRO_PROCESSO);
//    Header("Location: " . $url . "&msg=" . $msg);
//} else {
//    $msg = $crypt->crypt(PROC_CONCLUIDO);
//    Header("Location: " . $url . "&msg=" . $msg);
//}
?>